﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace aula13
{
    class Program
    {
        public static void Mostrar(Propriedade prop)
        {
            System.Console.WriteLine(prop.Nome);
        }

        static void Main(string[] args)
        {
            //Exemplo 1
            Console.WriteLine("Exemplo 1:\n");
            Accoes ctt = new Accoes 
            {
                Nome = "CTT",
                NumeroAccoes = 1000
            };
            Console.WriteLine(ctt.Nome + "\n");
            Console.WriteLine(ctt.NumeroAccoes + "\n");
            Console.WriteLine(ctt.Passivo + "\n");

            Casa casa = new Casa
            {
                Nome = "ESTIG",
                Hipoteca = 10
            };
            Console.WriteLine(casa.Nome + "\n");
            Console.WriteLine(casa.Passivo + "\n");

            Console.WriteLine("Exemplo 2:\n");
            Mostrar(ctt);
            Mostrar(casa);

            Console.WriteLine("Exemplo 3:\n");

            //upcasting
            Propriedade p = ctt;

            //downcasting
            Accoes a = (Accoes) p;

            if (p is Accoes)
                ((Accoes)p).NumeroAccoes = 1000;

            Console.WriteLine(a.NumeroAccoes);

            Console.ReadLine();


        }
    }
}
